import { request } from "@/api";

// 公共接口路径常量
const API_PATHS = {
  QUESTION_BANK: '/user/question-bank',
};

/*
* 题库管理相关接口
* **/

/*
* 获取用户题库列表（分页）
* 参数params需包含：
*   page     当前页码（默认1）
*   pageSize 每页条数（默认10）
* 需要Authorization请求头携带token
*/
function getQuestionBankList(params) {
    return request('get', `${API_PATHS.QUESTION_BANK}/list`, params);
}

// 获取题库列表和题目数量
function listQuestionBankAndQuestionNum() {
    return request('get', `${API_PATHS.QUESTION_BANK}/question-bank-and-question-num`);
}

/*
* 批量添加题目到题库
* 参数data需包含：
*   bankId     题库ID
*   questions  题目数组
* 需要Authorization请求头携带token
*/
function batchAddQuestions(data) {
    return request('post', `${API_PATHS.QUESTION_BANK}/add-questions`, data);
}

/*
* 创建新题库
* 参数questionBank需包含：
*   bankName   题库名称
*   description 题库描述
* 需要Authorization请求头携带token
*/
function createQuestionBank(questionBank) {
    return request('post', `${API_PATHS.QUESTION_BANK}/add`, questionBank);
}

/*
* 更新题库信息
* 参数questionBank需包含：
*   bankId     题库ID（必填）
*   其他字段为可选修改项
* 需要Authorization请求头携带token
*/
function updateQuestionBank(questionBank) {
    return request('post', `${API_PATHS.QUESTION_BANK}/update`, questionBank);
}

/*
* 软删除题库
* 参数bankId 题库ID
* 需要Authorization请求头携带token
*/
function softDeleteQuestionBank(bankId) {
    return request('post', `${API_PATHS.QUESTION_BANK}/soft-delete/${bankId}`);
}

/*
* 题目管理相关接口
/*
* 获取题库题目列表（分页）
* 参数params需包含：
*   bankId    题库ID
*   page      当前页码
*   pageSize  每页条数
*/
function getQuestionsByBank(params) {
    return request('get', `${API_PATHS.QUESTION_BANK}/question/${params.bankId}`, params);
}

/*
* 添加题目到题库
* 参数question需包含：
*   bankId     所属题库ID
*   title      题目内容
*   options    选项数组
*   answer     正确答案
*   type       题目类型
*   difficulty 难度级别
* 需要Authorization请求头携带token
*/
function addQuestion(question) {
    return request('post', `${API_PATHS.QUESTION_BANK}/question/add-question`, question);
}

/*
* 更新题目信息
* 参数question需包含：
*   questionId 题目ID（必填）
*   其他字段为可选修改项
* 需要Authorization请求头携带token
*/
function updateQuestion(question) {
    return request('post', `${API_PATHS.QUESTION_BANK}/question/update-question`, question);
}

/*
* 软删除题目
* 参数questionId 题目ID
* 需要Authorization请求头携带token
*/
function softDeleteQuestion(params) {
    return request('get', `${API_PATHS.QUESTION_BANK}/question/${params.questionId}/soft-delete?bankId=${params.bankId}`);
}

/*
* 创建题库添加题目
* 参数params需包含：
*   bank     题库对象
*   questions  题目集合
* 需要Authorization请求头携带token
*/
function addBankVzQuestion(params) {
    return request('post', `${API_PATHS.QUESTION_BANK}/add-vz-questions`, params);
}

/*
* 获取题库所有题目
* 参数params需包含：
*   bankId 题库ID
* 需要Authorization请求头携带token
*/
function getQuestionAll(params) {
    return request('get', `${API_PATHS.QUESTION_BANK}/question/list-question-by-bank-id/${params.bankId}`)
}

// 统一导出所有接口和路径常量
export {
    API_PATHS,
    getQuestionBankList,
    batchAddQuestions,
    createQuestionBank,
    updateQuestionBank,
    softDeleteQuestionBank,
    getQuestionsByBank,
    addQuestion,
    updateQuestion,
    softDeleteQuestion,
    addBankVzQuestion,
    getQuestionAll,
    listQuestionBankAndQuestionNum
};